﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Echart.Model.Geo
{
    public class geo
    {
        /// <summary>
        /// 组件 ID
        /// </summary>
        public string id { get; set; }

        /// <summary>
        /// 是否显示提示框组件，包括提示框浮层和 axisPointer。
        /// </summary>
        public bool? show { get; set; }

        /// <summary>          
        /// 地图类型。
        /// </summary>
        public string map { get; set; }

        /// <summary>
        /// 是否开启鼠标缩放和平移漫游。默认不开启。如果只想要开启缩放或者平移，可以设置成 'scale' 或者 'move'。设置成 true 为都开启
        /// </summary>
        public string roam { get; set; }

        /// <summary>
        /// 当前视角的中心点，用经纬度表示
        /// </summary>
        public Array[] center { get; set; }

        /// <summary>
        /// 这个参数用于 scale 地图的长宽比。  最终的 aspect 的计算方式是：geoBoundingRect.width / geoBoundingRect.height* aspectScale
        /// </summary>
        public double? aspectScale { get; set; }

        /// <summary>
        /// 二维数组，定义定位的左上角以及右下角分别所对应的经纬度。例如
        /// </summary>
        public Array[] boundingCoords { get; set; }

        /// <summary>
        /// 滚轮缩放的极限控制，通过min, max最小和最大的缩放值，默认的缩放为1。
        /// </summary>
        public object scaleLimit { get; set; }

        /// <summary>
        /// 自定义地区的名称映射 如：
        /// { 'China' : '中国'}
        /// /// </summary>
        public object nmaeMap { get; set; }

        /// <summary>
        /// 默认是 'name'，针对 GeoJSON 要素的自定义属性名称，作为主键用于关联数据点和 GeoJSON 地理要素。 例如：
        /// {    
        /// nameProperty: 'NAME', // 数据点中的 name：Alabama 会关联到 GeoJSON 中 NAME 属性值为 Alabama 的地理要素
        /// {"type":"Feature","id":"01","properties":{"NAME":"Alabama"}, "geometry": { ... }}
        ///     data:[
        ///     {name: 'Alabama', value: 4822023},
        ///     {name: 'Alaska', value: 731449},
        ///     ]
        /// }
        /// </summary>
        public string nameProperty { get; set; }

        /// <summary>
        /// 选中模式，表示是否支持多个选中，默认关闭，支持布尔值和字符串，字符串取值可选'single'表示单选，或者'multiple'表示多选。
        /// </summary>
        public string selectedMode { get; set; }

        /// <summary>
        /// 选中模式，表示是否支持多个选中，默认关闭，支持布尔值和字符串，字符串取值可选'single'表示单选，或者'multiple'表示多选。
        /// </summary>
        public object label { get; set; }

        /// <summary>
        /// 地图区域的多边形 图形样式。
        /// </summary>
        public object itemStyle { get; set; }

        /// <summary>
        /// 高亮状态下的多边形和标签样式。
        /// </summary>
        public object emphasis { get; set; }

        /// <summary>
        /// 所有图形的 zlevel 值。
        /// </summary>
        public double? zlevel { get; set; }

        /// <summary>
        /// 所有图形的 z 值。
        /// </summary>
        public double? z { get; set; }

        /// <summary>
        /// 组件离容器左侧的距离。
        /// </summary>
        public string left { get; set; }

        /// <summary>
        /// 组件离容器上侧的距离。
        /// </summary>
        public string top { get; set; }

        /// <summary>
        /// 组件离容器右侧的距离。
        /// </summary>
        public string right { get; set; }

        /// <summary>
        /// 组件离容器下侧的距离。
        /// </summary>
        public string bottom { get; set; }

        /// <summary>
        /// layoutCenter 和 layoutSize 提供了除了 left/right/top/bottom/width/height 之外的布局手段。
        /// 在使用 left/right/top/bottom/width/height 的时候，可能很难在保持地图高宽比的情况下把地图放在某个盒形区域的正中间，并且保证不超出盒形的范围。
        /// 此时可以通过 layoutCenter 属性定义地图中心在屏幕中的位置，layoutSize 定义地图的大小。如下示例
        /// layoutCenter: ['30%', '30%'],
        /// 如果宽高比大于 1 则宽度为 100，如果小于 1 则高度为 100，保证了不超过 100x100 的区域
        /// layoutSize: 100
        /// 设置这两个值后 left/right/top/bottom/width/height 无效。
        /// </summary>
        public Array[] layoutCenter { get; set; }

        /// <summary>
        /// 地图的大小
        /// </summary>
        public string layoutSize { get; set; }

        /// <summary>
        /// 在地图中对特定的区域配置样式。
        /// 例如：
        /// regions: [{
        /// name: '广东',
        /// itemStyle: {
        /// areaColor: 'red',
        /// color: 'red'   }}]
        /// </summary>
        public Array[] region { get; set; }

        /// <summary>
        /// 图形是否不响应和触发鼠标事件，默认为 false，即响应和触发鼠标事件。
        /// </summary>
        public bool? silent { get; set; }
    }
}
